#ifndef MY_IPC_H
#define MY_IPC_H

#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <sys/shm.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>

// 共享内存函数声明
int create_shm(int mykey, int size);
void* get_shm(int shmid);
void disconnect_shm(void *shmaddr);
void delete_shm(int shmid);

// 信号量函数声明
union semun {
    int val;
    struct semid_ds *buf;
    unsigned short *array;
};

int creat_sem(int mykey, int semval, int semnum);
void Wait(int sid, int sem_num);
void Signal(int sid, int sem_num);
void delete_sem(int semid);
int is_semid_valid(int semid);
int is_shmid_valid(int shmid);
void verify_key(int key);
// 调试宏
#define DEBUG

#endif // MY_IPC_H
